package com.chenu.gamscriptman.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

/**
 * @author flyan
 * date 2020-01-01
 * @function 游戏任务，描述一个设备正在运行什么游戏，去实现什么功能，是用户和后台数据沟通的桥梁。
 */
@Data
@Accessors(chain = true)
@ApiModel(value = "游戏任务", description = "抽象一个游戏任务，即一个设备正在通过一个游戏数据调度正在运行")    /* 这是一个API调用需要用到的参数 */
public class GameTask {

    @TableId(type = IdType.AUTO, value = "id")
    @ApiModelProperty(hidden = true)
    private Long id;

    @TableField(value = "group_nr")
    @ApiModelProperty(hidden = true)
    private String groupNr;

    @TableField(value = "dev_nr")
    @ApiModelProperty(hidden = true)
    private Long devNr;       /* 设备号，说明这个任务正在被哪个设备执行。 */

    @TableField(value = "region")
    @ApiModelProperty(value = "游戏角色所在大区",
            name = "region", required = true, dataType = "Long", example = "1")
    private Long region;        /* 设备运行游戏所在的大区。 */

    @TableField(value = "server")
    @ApiModelProperty(value = "游戏角色所在服务器",
            name = "region", required = true, dataType = "String", example = "天上人间")
    private String server;      /* 游戏角色所在服务器，这个字段只有在大区存在时才有意义。 */

    @TableField(value = "role")
    @ApiModelProperty(value = "游戏角色编号",
            name = "role", required = true, dataType = "Long", example = "1")
    private Long role;          /* 游戏角色编号 */

    @TableField(value = "game_data_fk")
    @ApiModelProperty(hidden = true)
    private Long gameDataFK;    /* 任务需要的游戏数据在哪？ */

    @TableField(value = "user_data_fk")
    @ApiModelProperty(hidden = true)
    private Long userDataFK;    /* 任务产生的用户数据在哪？ */

    /* 外键映射 */
    @TableField(exist = false)
    @ApiModelProperty(hidden = true)
    private GameData gameData;
    @TableField(exist = false)
    @ApiModelProperty(hidden = true)
    private UserData userData;

    @TableField(exist = false)
    @ApiModelProperty(value = "设备号，可以添加分组，分组号支持26个字母，格式：分组号 + 次设备号，分组号不给等于在默认分组，即不分组",
            name = "sdevNr", required = false, dataType = "string", example = "P7")
    String sdevNr;                  /* 提供给用户的设备号，它 = "分组号" + "设备号" */

}
